perm filename SAY.OSA[SYS,ALS] blob
sn#001161 filedate 1972-07-27 generic text, type T, neo UTF8
00010 BEGIN "SAY"
00020 DEFINE ⊂="COMMENT"; ⊂ 6/30/72 Runs SIG from FIX output;
00030 REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00040 REQUIRE "SIG[SYS,ALS]" LOAD_MODULE;
00050 EXTERNAL FORTRAN PROCEDURE SIG(REFERENCE INTEGER P);
00070 REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00120 SAFE INTEGER ARRAY LFILE[0:'177];
00130 SAFE INTEGER ARRAY INDATA[0:768];
00160 INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00170 INTERNAL INTEGER FLAG,TFLAG,UPCNT;
00180 INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,INFLAG;
00190 INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,BRK;
00200 STRING PREHINT;
00210 INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5;
00220 STRING READ1,FILEL,FILEI,TFILE,TFILEI,FILLST;
00230 LABEL START,ZZZZ,ZZZ,ZZ;
00240 DEFINE ⊂="COMMENT",CR="'15",LF="'12",TB="'11";
00250 DEFINE CRLF="CR&LF", CRLF0="CR&'177&'21"; ⊂ FOR CRLF W/O FORM FEED;
00260
00270 STRING PROCEDURE HEADER;
00280 BEGIN "HEADER"
00290 STRING H1,H2; INTEGER I,J,K;
00300 IF HCOUNT>0 THEN BEGIN HCOUNT←HCOUNT-1;
00305 HINCNT←HINCNT+1; RETURN(PREHINT) END
00310 ELSE WHILE HCOUNT=0 DO BEGIN "XX"
00320 I←LFILE[HINDEX]; K←LDB(POINT(7,I,30)); J←SEGC-K;
00330 IF I=0 THEN BEGIN PREHINT←"NU"; HCOUNT←99; RETURN(PREHINT) END;
00340 IF J ≥ 0 THEN BEGIN "LATCH"
00345 H1←CVXSTR(LDB(POINT(12,I,11)) LSH 24);
00350 H2←CVXSTR(LDB(POINT(12,I,23)) LSH 24);
00360 IF EQU(H1,H2) THEN BEGIN PREHINT←H1; HCOUNT←LDB(POINT(5,I,35));
00370 HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; HINCNT←HINCNT+1;
00375 RETURN(PREHINT); DONE END
00380 ELSE BEGIN PREHINT←"NU"; HCOUNT←LDB(POINT(5,I,35));
00390 HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; RETURN(PREHINT); DONE; END;
00400 END "LATCH";
00410 PREHINT←"NU"; RETURN(PREHINT); END "XX";
00420 END "HEADER";
00430 STDBRK(1);
00432 SETBREAK(14,"∃",NULL,"INS");
00436
00440 FILEL←"LIST1.L0";
00450 FILEI←"TOO1.DAT[1,THO]"; M←8; INFLAG←0;
00460 CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4; CHAN5←5;
00470 TABIN(INTOT);
00660
00670 IF (FILEI←STRIN("Data file list ("&FILEL&") = "))≠"" THEN
00675 FILEL←FILEI;
00680 CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,300,BRK,EOFA);
00690 LOOKUP(CHAN5,FILEL,1); EOFA←0;
00710 M←8; N←2↑M; NF←2*N;
00730
00732 FILLST←INPUT(CHAN5,14); EOFA←0;
00734
00740 START:
00750 WHILE EOFA=0 DO BEGIN "LISTREAD"
00760 HINDEX←21; HCOUNT←HINCNT←0;
00770 FILEI←SCAN(FILLST,1,J);
00870 IF FILEI="" THEN DONE;
00970
01010 CLOSE(CHAN4);
01020 OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
01030 LOOKUP(CHAN4,FILEI,0);
01037 IF EOF≠0 THEN DONE;
01040 ARRYIN(CHAN4,LFILE[0],'200); ⊂ Input header;
01060 SEGTOT←(LFILE[0]*6)%N;
01061 OUTSTR("File "&FILEI&" with "&CVS(SEGTOT)&" segments"&CRLF);
01065 ARRYIN(CHAN4,INDATA[0],SEGTOT*4);
01066 CLOSE(CHAN4);
01067 BPT←POINT(6,INDATA[0],-1);
01090 ZZ: HINDEX←21; HCOUNT←HINCNT←0;
01100
01110 FOR SEGC←1 STEP 1 UNTIL SEGTOT DO BEGIN
01120 READ1←HEADER;
01130 J←CVSIX(READ1);
01140 FOR I←0 STEP 1 UNTIL 63 DO BEGIN IF PHLIST[I]=0 THEN BEGIN
01150 OUTSTR("Hint not identified for segment "&CVS(SEGC)&CRLF);
01155 DONE END;
01160 IF PHLIST[I]=J THEN BEGIN HINT←H←I;TABLES[2]←HLIST[I];DONE;END;
01165 END;
01170
01180 FOR P←0 STEP 1 UNTIL 23 DO INDAT[P]←ILDB(BPT);
01200 ZZZZ: SIG(P);
01220 ZZZ: END;
01230
01231 OUTSTR("File done. "&CVS(HINCNT)&" hints found."&CRLF);
01233 IF EOFA≠0 THEN DONE;
01235 END "LISTREAD";
01335 TABOUT;
01370 OUTSTR("Tables saved. "&CVS(HINCNT)&" hints found."&CRLF);
01406
01410 END "SAY";